package data; import java.net.URL; import java.util.ArrayList; import java.util.Date; import data.ArticlesContract.Articles; import nl.matshofman.saxrssreader.RssFeed; import nl.matshofman.saxrssreader.RssItem; import nl.matshofman.saxrssreader.RssReader; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; public class ArticlesFeed { private static final String TAG = "ArticlesFeed"; // Tarea pesada para ejecutar en segundo plano que accede a los feeds y los carga en la BD public void loadNewArticles(SQLiteDatabase db) { Log.d(TAG, "load feed start"); URL url; RssFeed feed; try { url = new URL(RSSInterface.URL_FEED); feed = RssReader.read(url); ArrayList<RssItem> rssItems = feed.getRssItems(); for(RssItem rssItem : rssItems) { Log.i("RSS Reader", rssItem.getTitle()); if(!itemInDb(db, rssItem.getLink())) { addArticle(db, rssItem); } } } catch (Exception e) { e.printStackTrace(); } Log.d(TAG, "load feed stop"); } // M�todo para comprobar si el art�culo ya est� en la base de datos private boolean itemInDb(SQLiteDatabase db, String link) { String table = Articles.TABLE_NAME; String[] columns = null; String selection = Articles.LINK + " = '" + link + "'"; String[] selectionArgs = null; String groupBy = null; String having = null; String orderBy = null; Cursor cursor = db.query(table, columns, selection, selectionArgs , groupBy, having, orderBy); boolean existsItem = cursor.getCount() != 0; cursor.close(); return existsItem; } public static void addArticle(SQLiteDatabase db, RssItem rssItem) { ContentValues values = new ContentValues(); values.put(Articles.TITLE, rssItem.getTitle()); // Convertir la fecha al formato deseado Long millis = parseDate(rssItem.getPubDate()); values.put(Articles.PUB_DATE, millis); values.put(Articles.LINK, rssItem.getLink()); values.put(Articles.DESCRIPTION, rssItem.getDescription()); values.put(Articles.CONTENT, rssItem.getContent()); // Insertar el art�culo en la base de datos db.insert(Articles.TABLE_NAME, null, values); } private static Long parseDate(Date date) { return date.getTime(); } }